From: Juergen Gross Date: Fri, 31 Aug 2018 15:22:05 +0000 (+0200) Subject: xen: fill topology info for all present cpus X-Git-Tag: archive/raspbian/4.14.0+80-gd101b417b7-1+rpi1^2~63^2~3321 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22Dat/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22Dat?a=commitdiff_plain;h=780e2d309812e54353259bb9e6c28886e994b065;p=xen.git xen: fill topology info for all present cpus The topology information obtainable via XEN_SYSCTL_cputopoinfo is filled rather weird: the size of the array is derived from the highest online cpu number, so in case there are trailing offline cpus they will not be included. On a dual core system with 4 threads booted with smt=0 without this patch xl info -n will print: cpu_topology : cpu: core socket node 0: 0 0 0 1: 0 0 0 2: 1 0 0 while with this patch the output is: cpu_topology : cpu: core socket node 0: 0 0 0 1: 0 0 0 2: 1 0 0 3: 1 0 0 Signed-off-by: Juergen Gross Reviewed-by: Wei Liu Reviewed-by: Jan Beulich Acked-by: Julien Grall --- diff --git a/xen/common/sysctl.c b/xen/common/sysctl.c index 8e83c33a16..c0aa6bde4e 100644 --- a/xen/common/sysctl.c +++ b/xen/common/sysctl.c @@ -349,7 +349,7 @@ long do_sysctl(XEN_GUEST_HANDLE_PARAM(xen_sysctl_t) u_sysctl) unsigned int i, num_cpus; struct xen_sysctl_cputopoinfo *ti = &op->u.cputopoinfo; - num_cpus = cpumask_last(&cpu_online_map) + 1; + num_cpus = cpumask_last(&cpu_present_map) + 1; if ( !guest_handle_is_null(ti->cputopo) ) { struct xen_sysctl_cputopo cputopo = { };